let { checkToken } = require("../utils/token");
let url = require("url");
// 白名单
const whiteList = ["login"];

// 导出模块
module.exports = (req, res, next) => {
  // 格式化请求路径
  let pathname = url.parse(req.url, true).pathname.toLowerCase();
  pathname =
    pathname.charAt(pathname.length - 1) === "/"
      ? pathname.substring(0, pathname.length - 1)
      : pathname;
  pathname = pathname.substring(1);

  // 不在白名单内，需要校验token
  if (!whiteList.includes(pathname)) {
    // 获取token
    let token = req.headers["authorization"];
    token = token.replace("Bearer ", "");
    // 校验token
    let userInfo = checkToken(token);

    if (userInfo === false) {
      // 校验失败
      res.status(401).json({
        message: "token失效",
      });
      return;
    } else {
      // 校验成功，给req添加userInfo属性，记录用户信息，便于其他下一个中间件使用
      req.mpUser = userInfo;
      next();
    }
  } else {
    // 不在验证名单，则放行
    next();
  }
};
